textiter: add _gtk_text_iter_same_line()
authorChristian Hergert <chergert@redhat.com>
Sat, 27 Jul 2019 01:04:34 +0000 (18:04 -0700)
committerChristian Hergert <chergert@redhat.com>
Sun, 28 Jul 2019 17:34:15 +0000 (10:34 -0700)
This is a faster form to compare two text iter to see if they are on the
same line.

gtk/gtktextiter.c
gtk/gtktextiterprivate.h

index be31d084d014b58272d2e893bba9b86aa0f7450e..357b31a8a7abfa6fee5f5f0ce8cba5d4e8955bfb 100644 (file)
@@ -5358,6 +5358,25 @@ gtk_text_iter_equal (const GtkTextIter *lhs,
     }
 }
 
+gboolean
+_gtk_text_iter_same_line (const GtkTextIter *lhs,
+                          const GtkTextIter *rhs)
+{
+  GtkTextRealIter *real_lhs;
+  GtkTextRealIter *real_rhs;
+
+  real_lhs = gtk_text_iter_make_surreal (lhs);
+  real_rhs = gtk_text_iter_make_surreal (rhs);
+
+  if (real_lhs == NULL || real_rhs == NULL)
+    return FALSE;
+
+  check_invariants (lhs);
+  check_invariants (rhs);
+
+  return real_lhs->line == real_rhs->line;
+}
+
 /**
  * gtk_text_iter_compare:
  * @lhs: a #GtkTextIter
index 4fdf772c863015654ba9ffe7e94e26dda93c69ae..8db3f56b934788d964099ba3864da0e888cc391b 100644 (file)
@@ -41,6 +41,8 @@ gboolean            _gtk_text_iter_forward_indexable_segment  (GtkTextIter
 gboolean            _gtk_text_iter_backward_indexable_segment (GtkTextIter       *iter);
 gint                _gtk_text_iter_get_segment_byte           (const GtkTextIter *iter);
 gint                _gtk_text_iter_get_segment_char           (const GtkTextIter *iter);
+gboolean            _gtk_text_iter_same_line                  (const GtkTextIter *lhs,
+                                                               const GtkTextIter *rhs);
 
 gboolean       gtk_text_iter_get_attributes (const GtkTextIter *iter,
                                              GtkTextAttributes *values);